EC2 内部のログファイルが CloudWatch Logs へ転送される条件を確認してみた
EC2 インスタンスに CloudWatch エージェントを導入し、内部のログファイルを CloudWatch Logs に出力している環境において「ログファイルの変更が行われたにも関わらず、ロググループに転送されない場合がある」というお問い合わせを時々いただきます。
調べたところ、EC2 内部のログファイルが変更されると必ずロググループへ転送されるわけではなく、一定の条件があることが分かりました。
今回は検証した結果をもとに、ログファイルにどのような変更が行われた場合にロググループへ転送されるかをまとめてみました。
※ 記事執筆時点(2024.05)で Amazon Linux 2023 / CloudWatch エージェントのバージョン 1.300035 を用いた検証結果になります。OS や エージェントのバージョンによっては結果が異なる場合もあるかと思いますのでご了承ください。
やってみた
まずは参考ドキュメント [1] [2] をもとに Amazon Linux 2023 の EC2 インスタンスに CloudWatch エージェントをインストールし、EC2 内部の "test.log" というログファイルに変更が生じると CloudWatch ロググループに転送されるように設定します。
設定ファイル(config.json)は以下を使用しました。
CloudWatch エージェント設定ファイルの内容
{ "agent": { "metrics_collection_interval": 10, "logfile": "/opt/aws/amazon-cloudwatch-agent/logs/amazon-cloudwatch-agent.log" }, "logs": { "logs_collected": { "files": { "collect_list": [ { "file_path": "/opt/aws/amazon-cloudwatch-agent/logs/test.log", "log_group_name": "test.log", "log_stream_name": "{instance_id}", "timezone": "Local" } ] } } } }
上記の設定ファイルで CloudWatch エージェントを起動します。
準備ができたら EC2 インスタンスにログインして test.log ファイルを作成し、内容の追加や変更を行なって CloudWatch Logs 側の挙動を観測してみます。それぞれ以下の結果となりました。
test.log ファイルに行った操作 | CloudWatch Logs ロググループ側の挙動 |
---|---|
空の test.log ファイルを新規作成 | まだロググループが生成されていない |
ファイルにログを1行書き込む | ロググループが生成され、ログイベントが発行される |
同じバイト数(文字数)でログ行を上書きする | ログイベントは発行されない |
バイト数(文字数)を増やしてログ行を上書きする | ログイベントが発行されるが、少しタイムラグあり |
ログを1行追記する | ログイベントが発行される |
ログ行をすべて削除して上書きする | ログイベントが発行される |
test.log ファイルのタイムスタンプを変更する | ログイベントは発行されない |
上記結果をまとめると以下のようになります。
- ログイベントが発行される操作:
ログファイルへ行を追加する、文字数の変更や行の削除などでログファイルのバイト数が増減する -
ログイベントが発行されない操作:
空のログファイルを作成する、ログファイルに同じバイト数で上書きする、ファイルのタイムスタンプのみを変更する
もし「独自アプリケーションのログファイルを CloudWatch Logs に出力する設定にしたが、うまく動作しない」という場合は、上記の条件に当てはまっていないか確認してみましょう。
この情報がどなたかのお役に立てば幸いです!
参考資料
- [参考1] Amazon EC2 インスタンスに CloudWatch エージェントパッケージをダウンロードする - Amazon CloudWatch
- [参考2] CloudWatch エージェント設定ファイルを手動で作成または編集する - Amazon CloudWatch
アノテーション株式会社について
アノテーション株式会社はクラスメソッドグループのオペレーション専門特化企業です。サポート・運用・開発保守・情シス・バックオフィスの専門チームが、最新 IT テクノロジー、高い技術力、蓄積されたノウハウをフル活用し、お客様の課題解決を行っています。当社は様々な職種でメンバーを募集しています。「オペレーション・エクセレンス」と「らしく働く、らしく生きる」を共に実現するカルチャー・しくみ・働き方にご興味がある方は、アノテーション株式会社 採用サイトをぜひご覧ください。